package JWT;

/**
 * @Author: Cjj
 * 安全与鉴权
 */
public class JWT {
    /**
     * JWT有三段组成：分别是header,payload,signature
     * header:指定签名算法和token类型。payload中可放
     * 一些不敏感的数据,如userid,过期时间等。第三部分由
     * 第一部分使用base64URL加密+第一部分使用base64URL加密
     * +密钥进行签名。需要学会Spring Boot中JWT API的使用。
     *
     *Spring Security
     * 用于认证和授权的框架。认证：查看用户是否访问系统的权限;授权：
     * 控制谁可以访问哪些资源。学习Spring Security中一些封装的类和方法。
     * 如Authentication类,UserDerails类,authenticate()方法
     * UserDetails类,anthenticate()方法,loadUserByUsername()方法等
     * 使用Spring Security+redis+JWT做出认证和鉴权。
     *
     * Spring Cloud框架
     * Spring全家桶中用于构建微服务的框架
     * 学习微服务概念拆分微服务的原则 Nacos注册中心配置管理,Feign远程调用
     * Gateway服务网关的使用,过滤器的使用,Sentinel流控组件以及Seate分布式事务
     *
     * CI/CD持续集成
     * 因为我们每次构建完项目要手动构建和部署,有点麻烦,所以我们需要持续集成工具来做
     * 这些繁琐的步骤。CI/CD工具有Jekins和Gitlab-runner等。学会在Linux中搭建
     * 持续集成环境,结合dockerfile,docker-compose.yml完成持续集成。
     *
     * Docker容器技术
     * 在Linux中拉取docker镜像和创建容器,了解docker network和volume等知识,并
     * 能够编写dockerfile去构建镜像。学习docker-compose文件的写法及命令,然后做
     * 容器编排
     *
     * redis
     * 非关系型数据库,无论是系统性能优化还是鉴权都离不开它。主要了解CAP概念,学习Redis的
     * 数据结构和基本命令,发布订阅模式,Redis事务,Redis持久化操作(RDB&AOF),主从复制,
     * 哨兵模式,Redis集群搭建。
     * 进阶：了解缓存雪崩,缓存穿透,缓存击穿及对应解决方案。使用Redis限流(令牌桶算法等)
     *
     * RabbitMQ/Kafka
     * 消息中间件,两者选一学习即可。RabbitMQ易上手,而KafKa性能更好用于大型分布式系统。这
     * 一阶段要学习消息队列的点对点模式与发布订阅模式，分布式事务2PC与3PC,这两种消息队列在
     * Spring Boot的API调用
     *
     * Java的特点
     *  面向对象：
     *    Java是一种面向对象的编程语言,支持封装,继承和多态等特性。这些特性有助于提高软件的可维护性和可重用性。
     * 平台无关性：
     *    Java实现了写一次,处处运行(WORA)的理念。Java代码在编译后生成字节码,这些字节码可以在任何安装了Java虚拟机
     *    的操作系统上运行。而无需进行重新编译。
     * 自动内存管理
     *   java具有垃圾回收机制,可以自动管理内存的分配和释放,减少内存泄露和相关问题/
     * 强类型语言：
     *    Java是强类型语言,要求变量在使用之前必须声明类型,有助于在编译时捕获错误,从而提高代码的安全性和稳定性。
     * 丰富的标准库：
     *    Java提供了大型的标准库,涵盖数据结构,网络编程,输入输出,图形用户界面,数据库连接等多种功能,方便开发者
     *    快速构建应用。
     * 多线程支持
     *    Java支持多线程编程,可以轻松创建并发应用程序,利用多核处理器的计算能力,提高程序的性能和响应速度
     * 安全性：
     *    Java具有安全的执行环境和丰富的安全功能,包括字节码验证,沙盒执行等机制,适合开发安全敏感的应用程序。(如金融,医疗等领域)
     */


    /**
     * Java的组成部分
     *  Java语言：
     *   是Java的核心部分,用于编写Java应用程序。提供了丰富的语法和语言特性
     *  Java编译器：
     *   将Java源代码编译为字节码。Java编译器通常是javac命令工具
     */

    /**
     * 计算机的五大组件：
     *  输入设备 输出设备 存储器和运算器 控制器
     *  输入设备：向电脑输入数据和信息的设备
     *  输出设备：将电脑中的信息输出给用户的设备。常用的有显示器,音箱,打印机,投影仪
     *
     *  主板：
     *    连接所有其他设备的设备,其他设备的载体,主板主要是为CPU,内存 显卡 硬盘
     *    CPU:中央处理单元,电脑核心就是靠CPU来进行工作,起到协调和控制作用
     *    硬盘：存储资料和软件等数据的设备,有容量大,断电数据不丢失的特点,被人们称为“数据仓库”
     *  内存：
     *   1.负责硬盘等硬件上的数据与CPU之间数据交换处理
     *   2.缓存系统中的临时数据
     *   3.断电后数据丢失
     *  显卡：
     *   显示器想要呈现画面,显卡是关键。简单来说,就是负责在显示屏显示一切信息。
     *   电源：将电压220伏的市电转换为低等电压,然后输送到主板及各个硬件！
     *
     */
}
